package com.sgb.kjwl.di.shopping;

import com.sgb.kjwl.repository.HomeRepertory;
import com.sgb.kjwl.repository.ShoppingCarRepertory;
import com.sgb.kjwl.repository.impl.ShoppingCarRepertoryImpl;
import com.sgb.kjwl.view.ui.fragment.self.ShoppingCartFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopGroupBuyCategoryFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopGroupBuyChildFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopJcChildFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopMachineChildFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopMaterialChildFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopPicklFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopTdAchieveFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopTdChildFragment;
import com.sgb.kjwl.view.ui.fragment.shop.ShopTdIntroFragment;
import com.sgb.kjwl.viewmodel.shopping.ShopGroupBuyCategoryModel;
import com.sgb.kjwl.viewmodel.shopping.ShopGroupBuyChildModel;
import com.sgb.kjwl.viewmodel.shopping.ShopJcChildModel;
import com.sgb.kjwl.viewmodel.shopping.ShopMachinekChildModel;
import com.sgb.kjwl.viewmodel.shopping.ShopMateriaChildModel;
import com.sgb.kjwl.viewmodel.shopping.ShopPickModel;
import com.sgb.kjwl.viewmodel.shopping.ShopTdAchieveModel;
import com.sgb.kjwl.viewmodel.shopping.ShopTdChildModel;
import com.sgb.kjwl.viewmodel.shopping.ShopTdIntroModel;
import com.sgb.kjwl.viewmodel.shopping.ShoppingCarModel;
import com.swgk.core.base.di.Fragment;
import com.swgk.core.base.api.BaseApiSource;
import com.swgk.core.base.model.preference.BasePreferenceSource;

import dagger.Module;
import dagger.Provides;

@Module
public class ShoppingFragModule {
    private ShoppingCartFragment shoppingCartFragment;
    private ShopMaterialChildFragment shopMaterialChildFragment;
    private ShopPicklFragment shopPicklFragment;
    private ShopMachineChildFragment shopMachineChildFragment;
    private ShopJcChildFragment shopJcChildFragment;
    private ShopTdChildFragment shopTdChildFragment;

    private ShopTdIntroFragment shopTdIntroFragment;
    private ShopTdAchieveFragment shopTdAchieveFragment;

    private ShopGroupBuyCategoryFragment shopGroupBuyCategoryFragment;

    private ShopGroupBuyChildFragment shopGroupBuyChildFragment;

    public ShoppingFragModule(ShopTdIntroFragment shopTdIntroFragment) {
        this.shopTdIntroFragment = shopTdIntroFragment;
    }

    public ShoppingFragModule(ShopTdAchieveFragment shopTdAchieveFragment) {
        this.shopTdAchieveFragment = shopTdAchieveFragment;
    }

    public ShoppingFragModule(ShopTdChildFragment shopTdChildFragment) {
        this.shopTdChildFragment = shopTdChildFragment;
    }

    public ShoppingFragModule(ShoppingCartFragment shoppingCartFragment) {
        this.shoppingCartFragment = shoppingCartFragment;
    }

    public ShoppingFragModule(ShopJcChildFragment shopJcChildFragment) {
        this.shopJcChildFragment = shopJcChildFragment;
    }


    public ShoppingFragModule(ShopMaterialChildFragment shopMaterialChildFragment) {
        this.shopMaterialChildFragment = shopMaterialChildFragment;
    }

    public ShoppingFragModule(ShopPicklFragment shopPicklFragment) {
        this.shopPicklFragment = shopPicklFragment;
    }


    public ShoppingFragModule(ShopMachineChildFragment shopMachineChildFragment) {
        this.shopMachineChildFragment = shopMachineChildFragment;
    }

    public ShoppingFragModule(ShopGroupBuyCategoryFragment shopGroupBuyCategoryFragment) {
        this.shopGroupBuyCategoryFragment = shopGroupBuyCategoryFragment;
    }

    public ShoppingFragModule(ShopGroupBuyChildFragment shopGroupBuyChildFragment) {
        this.shopGroupBuyChildFragment = shopGroupBuyChildFragment;
    }

    @Provides
    @Fragment
    ShoppingCarRepertory provideShoppingCarRepertory(BaseApiSource apiSource, BasePreferenceSource preferenceSource) {
        return new ShoppingCarRepertoryImpl(apiSource, preferenceSource);
    }

    @Provides
    @Fragment
    ShoppingCarModel provideShoppingCarModel(ShoppingCarRepertory repertory) {
        return new ShoppingCarModel(shoppingCartFragment, repertory);
    }


    @Provides
    @Fragment
    ShopMateriaChildModel shopMaterialChildModel(ShoppingCarRepertory repertory) {
        return new ShopMateriaChildModel(shopMaterialChildFragment, repertory);
    }

    @Provides
    @Fragment
    ShopPickModel shopPickModel(ShoppingCarRepertory repertory) {
        return new ShopPickModel(shopPicklFragment, repertory);
    }


    @Provides
    @Fragment
    ShopMachinekChildModel shopMachineChildModel(ShoppingCarRepertory repertory) {
        return new ShopMachinekChildModel(shopMachineChildFragment, repertory);
    }

    @Provides
    @Fragment
    ShopJcChildModel shopJcChildModel(ShoppingCarRepertory repertory) {
        return new ShopJcChildModel(shopJcChildFragment, repertory);
    }

    @Provides
    @Fragment
    ShopTdIntroModel shopTdIntroModel(ShoppingCarRepertory repertory) {
        return new ShopTdIntroModel(shopTdIntroFragment, repertory);
    }

    @Provides
    @Fragment
    ShopTdAchieveModel shopTdAchieveModel(ShoppingCarRepertory repertory) {
        return new ShopTdAchieveModel(shopTdAchieveFragment, repertory);
    }

    @Provides
    @Fragment
    ShopTdChildModel shopTdChildModel(ShoppingCarRepertory repertory) {
        return new ShopTdChildModel(shopTdChildFragment, repertory);
    }

    @Provides
    @Fragment
    ShopGroupBuyCategoryModel shopGroupBuyCategoryModel() {
        return new ShopGroupBuyCategoryModel(shopGroupBuyCategoryFragment);
    }

    @Provides
    @Fragment
    ShopGroupBuyChildModel shopGroupBuyChildModel(ShoppingCarRepertory repertory) {
        return new ShopGroupBuyChildModel(shopGroupBuyChildFragment, repertory);
    }
}

